Awesome Scientific Computing
      
    
    
      
    
    
      Useful resources for scientific computing and numerical analysis.
    
    
      Scientific computing and numerical analysis are research fields that aim
      to provide methods for solving large-scale problems from various areas of
      science with the help of computers. Typical problems are ordinary and
      partial differential equations (ODEs, PDEs), their discretizations, and
      the solution of linear algebra problems arising from them.
    
    Contents
    
    Basic linear algebra
    
      - 
        BLAS - Standard building
        blocks for performing basic vector and matrix operations. (Fortran,
        public domain,
        GitHub)
      
 
      - 
        OpenBLAS - Optimized BLAS library
        based on GotoBLAS2. (C and Assembly, BSD,
        GitHub)
      
 
      - 
        BLIS - High-performance
        BLAS-like dense linear algebra libraries. (C, BSD, GitHub)
      
 
      - 
        LAPACK - Routines for
        solving systems of linear equations, linear least-squares, eigenvalue
        problems, etc. (Fortran, BSD,
        GitHub)
      
 
      - 
        Eigen
        - C++ template library for linear algebra. (C++, MPL 2,
        GitLab)
      
 
      - 
        Ginkgo -
        High-performance manycore linear algebra library, focus on sparse
        systems. (C++, BSD,
        GitHub)
      
 
      - 
        blaze -
        High-performance C++ math library for dense and sparse arithmetic. (C++,
        BSD, Bitbucket)
      
 
    
    
    
      - 
        PETSc - Parallel solution
        of scientific applications modeled by PDEs. (C, 2-clause BSD,
        GitLab)
      
 
      - 
        DUNE Numerics - Toolbox for
        solving PDEs with grid-based methods. (C++, GPL 2,
        GitLab)
      
 
      - 
        SciPy - Python modules for
        statistics, optimization, integration, linear algebra, etc. (Python,
        mostly BSD, GitHub)
      
 
      - 
        NumPy - Fundamental package needed for
        scientific computing with Python. (Python, BSD,
        GitHub)
      
 
    
    Finite Elements
    
      - 
        FEniCS - Computing platform for
        solving PDEs in Python and C++. (C++/Python, LGPL 3,
        GitHub/Bitbucket)
      
 
      - 
        libMesh - Framework for the
        numerical simulation of PDEs using unstructured discretizations. (C++,
        LGPL 2.1, GitHub)
      
 
      - 
        deal.II - Software library supporting
        the creation of finite element codes. (C++, LGPL 2.1,
        GitHub)
      
 
      - 
        Netgen/NGSolve - High performance
        multiphysics finite element software. (C++, LGPL 2.1,
        GitHub)
      
 
      - 
        Firedrake - Automated
        system for the solution of PDEs using the finite element method.
        (Python, LGPL 3,
        GitHub)
      
 
      - 
        MOOSE - Multiphysics
        Object Oriented Simulation Environment. (C++, LGPL 2.1,
        GitHub)
      
 
      - 
        MFEM - Free, lightweight, scalable C++
        library for finite element methods. (C++, LGPL 2.1,
        GitHub)
      
 
      - 
        SfePy - Simple Finite Elements in
        Python. (Python, BSD,
        GitHub)
      
 
      - 
        FreeFEM - High level
        multiphysics-multimesh finite element language. (C++, LGPL,
        GitHub)
      
 
      - 
        libceed
        - Code for Efficient Extensible Discretizations. (C, 2-clause BSD,
        GitHub)
      
 
      - 
        scikit-fem - Simple
        finite element assemblers. (Python, BSD/GPL, GitHub)
      
 
    
    Meshing
    
      - 
        Gmsh - Three-dimensional finite element
        mesh generator with pre- and post-processing facilities. (C++, GPL,
        GitLab)
      
 
      - 
        pygmsh - Python
        interface for Gmsh. (Python, GPL 3, GitHub)
      
 
      - 
        MeshPy -
        Quality triangular and tetrahedral mesh generation. (Python, MIT,
        GitHub)
      
 
      - 
        meshio - I/O for various
        mesh formats, file conversion. (Python, MIT, GitHub)
      
 
      - 
        CGAL - Algorithms for computational
        geometry. (C++, mixed LGPL/GPL,
        GitHub)
      
 
      - 
        pygalmesh - Python
        interface for CGAL’s 3D meshing capabilities. (Python, GPL 3, GitHub)
      
 
      - 
        mshr - Mesh
        generation component of FEniCS. (Python, GPL 3, Bitbucket)
      
 
      - 
        MOAB -
        Representing and evaluating mesh data. (C++, mostly LGPL 3,
        Bitbucket)
      
 
      - 
        TetGen
        - Quality tetrahedral mesh generator and 3D Delaunay triangulator. (C++,
        AGPLv3)
      
 
      - 
        Triangle -
        Two-dimensional quality mesh generator and Delaunay triangulator. (C,
        nonfree software)
      
 
      - 
        optimesh - Triangular
        mesh smoothing. (Python, GPL 3, GitHub)
      
 
      - 
        distmesh - Simple
        generator for unstructured triangular and tetrahedral meshes. (MATLAB,
        GPL 3)
      
 
      - 
        QuadriFlow
        - A Scalable and Robust Method for Quadrangulation. (C++, BSD,
        GitHub)
      
 
      - 
        trimesh - Loading and using triangular
        meshes with an emphasis on watertight surfaces. (Python, MIT,
        GitHub)
      
 
      - 
        dmsh - Simple generator
        for unstructured triangular meshes, inspired by distmesh. (Python, GPL
        3, GitHub)
      
 
      - 
        pmp-library - Polygon mesh
        processing library. (C++, MIT with Employer Disclaimer,
        GitHub)
      
 
      - 
        Mmg - Robust, open-source &
        multidisciplinary software for remeshing. (C, LGPL 3,
        GitHub)
      
 
      - 
        meshplex - Fast tools
        for simplex meshes. (Python, GPL 3, GitHub)
      
 
      - 
        TetWild - Robust
        Tetrahedral Meshing in the Wild. (C++, GPL 3,
        GitHub)
      
 
      - 
        TriWild -
        Robust Triangulation with Curve Constraints. (C++, MPL 2,
        GitHub)
      
 
      - 
        fTetWild - Fast
        Tetrahedral Meshing in the Wild. (C++, MPL 2,
        GitHub)
      
 
      - 
        SeismicMesh -
        Parallel 2D/3D triangle/tetrahedral mesh generation with sliver removal.
        (Python and C++, GPL 3, GitHub)
      
 
    
    
    
      - 
        NetCDF -
        Software libraries and data formats for array-oriented scientific data.
        (C/C++/Fortran/Java/Python,
        custom open-source license, GitHub)
      
 
      - 
        HDF5 - Data model,
        library, and file format for storing and managing data. (C/Fortran, BSD,
        GitHub)
      
 
      - 
        XDMF - eXtensible
        Data Model and Format for data from High Performance Computing codes.
        (C++, GitLab)
      
 
      - 
        Zarr - Format for
        the storage of chunked, compressed, N-dimensional arrays. (Python, MIT,
        GitHub)
      
 
    
    Sparse linear solvers
    
      - 
        SuperLU -
        Direct solution of large, sparse, nonsymmetric systems of linear
        equations. (C, mostly BSD,
        GitHub)
      
 
      - 
        KryPy - Krylov
        subspace methods for the solution of linear algebraic systems. (Python,
        MIT, GitHub)
      
 
      - 
        PyAMG - Algebraic Multigrid
        Solvers in Python. (Python, MIT,
        GitHub)
      
 
      - 
        hypre
        - Library of high-performance preconditioners and solvers. (C, Apache
        2.0/MIT, GitHub)
      
 
    
    Visualization
    
      - 
        ParaView - Multi-platform data
        analysis and visualization application based on VTK. (C++, BSD,
        GitLab)
      
 
      - 
        VTK - Process images and create 3D
        computer graphics. (C++, BSD,
        GitLab)
      
 
      - 
        Mayavi - 3D
        scientific data visualization and plotting in Python. (Python, BSD,
        GitHub)
      
 
      - 
        Polyscope - Viewer and user
        interface for 3D geometry processing. (C++, MIT,
        GitHub)
      
 
      - 
        PyVista - 3D plotting and mesh
        analysis through a streamlined interface for VTK. (Python, MIT,
        GitHub)
      
 
      - 
        vedo - Library for scientific
        analysis and visualization of 3D objects based on VTK. (Python, MIT,
        GitHub)
      
 
      - 
        yt - A toolkit for analysis and
        visualization of volumetric data. (Python, BSD,
        GitHub)
      
 
      - 
        F3D - Cross-platform, fast,
        and minimalist 3D viewer with scientific visualization tools. (C++, BSD,
        GitLab)
      
 
      - 
        TTK - Topological
        data analysis and visualization. (C++/Python, BSD,
        GitHub)
      
 
    
    
    
      - 
        FFTW - Discrete Fourier transforms in
        one or more dimensions, of arbitrary input size, real and complex. (C,
        GPL2, GitHub)
      
 
      - 
        Qhull - Convex hull, Delaunay
        triangulation, Voronoi diagram, halfspace intersection about a point,
        etc. (C/C++,
        custom open source license, GitHub)
      
 
      - 
        GSL - Random number
        generators, special functions, and least-squares fitting etc. (C/C++,
        GPL 3, Savannah)
      
 
      - 
        OpenFOAM - Free, open source CFD
        (computational fluid dynamics) software. (C++, GPL 3,
        GitHub)
      
 
      - 
        quadpy - Numerical
        integration (quadrature, cubature) in Python. (Python, GPL 3, GitHub)
      
 
      - 
        FiPy - Finite-volume PDE
        solver. (Python,
        custom open-source license, GitHub)
      
 
      - 
        accupy - Accurate sums
        and dot products for Python. (Python, GPL 3, GitHub)
      
 
      - 
        SLEPc - Scalable Library for
        Eigenvalue Problem Computations. (C, 2-clause BSD,
        GitLab)
      
 
      - 
        Chebfun - Computing with
        functions to about 15-digit accuracy. (MATLAB, BSD,
        GitHub)
      
 
      - 
        pyMOR - Model Order Reduction with
        Python. (Python, 2-clause BSD,
        GitHub)
      
 
      - 
        cvxpy - Modeling language for
        convex optimization problems. (Python, Apache 2.0,
        GitHub)
      
 
      - 
        PyWavelets -
        Wavelet transforms in Python. (Python, MIT,
        GitHub)
      
 
      - 
        NFFT -
        Nonequispaced fast Fourier transform. (C/MATLAB, GPL 2,
        GitHub)
      
 
      - 
        preCICE - Coupling library for
        partitioned multi-physics simulations (FSI, CHT, and more). (C++, LGPL
        3, GitHub)
      
 
      - 
        orthopy - Compute
        orthogonal polynomials efficiently. (Python, GPL 3, GitHub)
      
 
      - 
        pyGAM -
        Generalized Additive Models in Python. (Python, Apache 2.0,
        GitHub)
      
 
      - 
        Dedalus - Solve partial
        differential equations with spectral methods. (Python, GPL 3,
        GitHub)
      
 
      - 
        PyGMO - Massively parallel
        optimization. (Python/C++, MPL 2,
        GitHub)
      
 
      - 
        shenfun -
        High-performance Python library for the spectral Galerkin method.
        (Python, BSD-2,
        GitHub)